package com.chenfan.mcn.dao;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.chenfan.common.dto.PagerDTO;
import com.chenfan.common.extension.mybatisplus.enhanced.EnhancedBaseMapper;
import com.chenfan.mcn.model.AeRoyalties;
import com.chenfan.mcn.model.dto.AeRoyaltiesDTO;
import com.chenfan.mcn.model.dto.AeRoyaltiesExportDTO;
import com.chenfan.mcn.model.vo.AeRoyaltiesVO;
import com.chenfan.mcn.model.vo.AeRoyaltiesVoV2;
import org.apache.ibatis.annotations.Param;

import java.math.BigDecimal;
import java.util.List;

/**
 * @Author chenguopeng
 * @Date 2021/6/7 14:45
 */
public interface AeRoyaltiesMapper extends EnhancedBaseMapper<AeRoyalties> {

    /**
     * 查询列表
     *
     * @param aeRoyaltiesDTO
     * @param page
     * @return
     */
    Page<AeRoyaltiesVO> pageInfo(Page<AeRoyaltiesVO> page, @Param("dto") AeRoyaltiesDTO aeRoyaltiesDTO);

    Page<AeRoyaltiesVoV2> getContractExcutionOrders(Page<AeRoyaltiesVO> page,@Param("dto") AeRoyaltiesDTO aeRoyaltiesDTO);


    /**
     * 检查执行单是否重复添加
     *
     * @param excuteIds
     * @param id
     * @return
     */
    List<String> checkIsRepeat(@Param("excuteIds") List<Long> excuteIds, @Param("id") Long id);

    /**
     * 检查执行单是否重复添加
     *
     * @param id
     * @return
     */
    List<String> checkIsRepeats(@Param("id") Long id);

    /**
     * 检查执行单是否重复添加
     *
     * @param excuteIds
     * @param id
     * @return
     */
    List<String> checkIsRepeatById(@Param("excuteIds") List<Long> excuteIds, @Param("id") Long id);


    /**
     * 判断执行单是否依然被引用
     *
     * @param excuteIds
     * @return
     */
    List<Long> getExcuteIds(@Param("excuteIds") List<Long> excuteIds);


    /**
     * 计算季度账单总值
     *
     * @param aeQuarterlyId
     * @return
     */
    BigDecimal getTotalMoney(Long aeQuarterlyId);

    /**
     * 导出提成单列表
     *
     * @param aeRoyaltiesExportDTO
     * @param status
     * @return
     */
    List<AeRoyaltiesVO> exportList(@Param("dto") AeRoyaltiesExportDTO aeRoyaltiesExportDTO, @Param("status") Integer status);


    /**
     * 弹窗
     *
     * @param aeRoyaltiesExportDTO
     * @return
     */
    List<AeRoyalties> popUsList(@Param("dto") AeRoyaltiesExportDTO aeRoyaltiesExportDTO);


    /**
     * 获取发放提成总额
     *
     * @param aeRoyaltiesDTO
     * @param status
     * @return
     */
    BigDecimal getTotalCommission(@Param("dto") PagerDTO aeRoyaltiesDTO, @Param("status") Integer status);


    /**
     * 获取发放提成总额
     *
     * @param aeRoyaltiesDTO
     * @param status
     * @return
     */
    BigDecimal getTotalActualQuotedPrice(@Param("dto") PagerDTO aeRoyaltiesDTO, @Param("status") Integer status);

    /**
     * 作废的ae提成列表
     *
     * @param aeRoyaltiesDTO
     * @param page
     * @return
     */
    Page<AeRoyaltiesVO> invalidList(Page<AeRoyaltiesVO> page, @Param("dto") AeRoyaltiesDTO aeRoyaltiesDTO);
}
